package com.zjl.redis.第06章_SpringBoot整合redis;

import jakarta.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;

//import javax.annotation.Resource;
import java.util.UUID;
import java.util.concurrent.ThreadLocalRandom;

/**
 * 配置文件 application-redis.properties 中
 */
@Service
public class D_RedisTemplate_Service {
    private static final Logger log = LoggerFactory.getLogger(D_RedisTemplate_Service.class);
    public static final String ORDER_KEY = "ord:";
    /**
     * RedisTemplate ：
     * key 会出现 部分乱码
     * 如 添加一个 ord:973
     * redis 里是"\xac\xed\x00\x05t\x00\aord:973"
     *     或是"tord:973"
     *    但是 只用继续用 RedisTemplate 查询,tord:973这样也查不到
     *    因为 他没序列化，把类型也添加了进去
     *
     * StringRedisTemplate 就没问题，因为他序列化了
     * 因为 RedisTemplate 没用进行类型序列化，
     * 而StringRedisTemplate实现了序列化，
     * 我们用
     * @see D_RedisConfig 来实现RedisTemplate的序列化，这样使用RedisTemplate也没问题
     */
    @Resource private RedisTemplate redisTemplate;
//    @Resource private StringRedisTemplate stringRedisTemplate;

    public void addOrder(){
        int i = ThreadLocalRandom.current().nextInt(1000) + 1;
        String 订单 = UUID.randomUUID().toString();
        String value = "测试订单" + 订单;
        String key = ORDER_KEY + i;
        redisTemplate.opsForValue().set(ORDER_KEY + i,value);
//        stringRedisTemplate.opsForValue().set(ORDER_KEY + i,value);
        log.info("*****key:{}\t****value:{}",key,value);
    }

    public String getOrder(Integer keyId){
        Object o = redisTemplate.opsForValue().get(ORDER_KEY + keyId);
//        String o = stringRedisTemplate.opsForValue().get(ORDER_KEY + keyId);
        return o.toString();

    }
}
